perm filename DELETE.SAI[PNT,HE] blob sn#417621 filedate 1979-02-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN
C00007 ENDMK
C⊗;
BEGIN
COMMENT THIS PROGRAM IS USED TO DELETE .REL FILES
	WHICH MAY NOT BE OTHERWISE DELETED FOR A RECOMPILATION
	IT MAKES USE OF THE DATA FILE DELETE.DAT WHICH SHOULD BE
	EDITED WITH /N SWITCH;
INTEGER DATCHAN;
INTEGER DBRCHAR,DEOF,DFLAG;
INTEGER FILESDELETED;

INTEGER SRCCHAN,RELCHAN;
INTEGER SBRCHAR,SEOF,SFLAG,RBRCHAR,REOF,RFLAG;

INTEGER BRCHAR;
INTEGER NULBR,WORDENDBR,WORDBEGBR,CRLFBR;

STRING INPUTSTRING,RFILE,SFILE;
STRING REXT,SEXT;

INTEGER RDATE,SDATE,RTIME,STIME;
PROCEDURE GETINFO(REFERENCE INTEGER DATE,TIME; REFERENCE STRING EXT);
	BEGIN
	INTEGER ARRAY INFOARRAY[1:6];
	FILEINFO(INFOARRAY);
	DATE←((INFOARRAY[2] LAND '700000)LSH -3 )+ INFOARRAY[3] LAND '7777;
	TIME←(INFOARRAY[3] LSH -12)LAND '3777;
	EXT←CV6STR(INFOARRAY[2] LAND ('777777 LSH 18))[1 TO 3];
	END;

REQUIRE "[][]" DELIMITERS;
DEFINE ! = [COMMENT],
	FF =['14],
	CR =['15],
	LF =['12],
	CRLF = [('15&'12)],
	SP =['40],
	TB =['11];

! now look for DELETE.DAT;

OUTSTR(CRLF&"EXECUTING DELETE.DMP[PNT,HE]...."&CRLF);

OPEN(DATCHAN←GETCHAN,"DSK",0,2,0,200,DBRCHAR,DEOF);
LOOKUP(DATCHAN,"DELETE.DAT",DFLAG);
IF DFLAG THEN OUTSTR(CRLF&"COULDN'T LOOKUP FILE DELETE.DAT"&CRLF);
FILESDELETED←0;

SETBREAK(NULBR←GETBREAK,FF,NULL,"INKS");
SETBREAK(WORDBEGBR←GETBREAK,";ABCDEFGHIJKLMNOPQRSTUVWXYZ",SP&TB&LF,"INR");
SETBREAK(WORDENDBR←GETBREAK,SP&TB&CR,LF,"INS");
SETBREAK(CRLFBR←GETBREAK,CR,LF,"INS");

OPEN(SRCCHAN←GETCHAN,"DSK",0,2,0,200,SBRCHAR,SEOF);
OPEN(RELCHAN←GETCHAN,"DSK",0,2,0,200,RBRCHAR,REOF);
INPUTSTRING←NULL;
DO INPUTSTRING←INPUTSTRING&INPUT(DATCHAN,NULBR) UNTIL DEOF;

DO BEGIN
	SCAN(INPUTSTRING,WORDBEGBR,BRCHAR);
	WHILE BRCHAR=";" DO
		BEGIN
		SCAN(INPUTSTRING,CRLFBR,BRCHAR);
		SCAN(INPUTSTRING,WORDBEGBR,BRCHAR);
		END;
	RFILE←SCAN(INPUTSTRING,WORDENDBR,BRCHAR);
	IF BRCHAR≠TB THEN 
		BEGIN OUTSTR(CRLF&"Need tab after "&rfile&crlf&" TYPE CR TO CONTINUE");
			INCHWL;
		END;
	SCAN(INPUTSTRING,WORDBEGBR,BRCHAR);
	SFILE←SCAN(INPUTSTRING,WORDENDBR,BRCHAR);
	IF BRCHAR≠CR THEN
		BEGIN OUTSTR(CRLF&"Need <RETURN> after "&rfile&crlf&" TYPE CR TO CONTINUE");
			INCHWL;
		END;

	LOOKUP(RELCHAN,RFILE,RFLAG);
	IF NOT RFLAG THEN
		BEGIN
		GETINFO(RDATE,RTIME,REXT);
		LOOKUP(SRCCHAN,SFILE,SFLAG);
		GETINFO(SDATE,STIME,SEXT);
		IF (SDATE>RDATE OR (SDATE=RDATE AND STIME≥RTIME))
			THEN BEGIN
				PRINT(CRLF,"Deleting ",RFILE);
				RENAME(RELCHAN,NULL,0,RFLAG);
				FILESDELETED←FILESDELETED + 1;
			END;
		END;
	END UNTIL LENGTH(INPUTSTRING)≤2;

PRINT(CRLF,"Number of files deleted: ",FILESDELETED);

END;